EoIP SoftGRE стенд (Protocol Type: 0x6558)

Пример стенда для демонстрации EoIP SoftGRE между OpenWRT и Linux-сервером

Этот документ описывает настройку тестового стенда для демонстрации работы протокола EoIP SoftGRE (Protocol Type: 0x6558) между устройством под управлением OpenWRT и Linux-сервером. В стенде создаётся GRE-туннель с поддержкой VLAN, а также демонстрируется подключение тестовых устройств и оценка производительности работы тоннеля. Схема стенда:

Описание стенда

GRE Key Используется ключ 123 для идентификации туннеля
VLAN Используются VLAN 10 и VLAN 20 для разделения трафика
OpenWRT-устройство RTR-2 Настраивается GRE-туннель (gretap) с IP-адресом 192.168.109.172 и связывается с Linux-сервером (192.168.109.183). Порты LAN3 и LAN4 на устройстве OpenWRT настроены для VLAN 10 и VLAN 20 соответственно
Linux-сервер Настраивается GRE-туннель (gretap1) с поддержкой VLAN 10 (gretap1.10) и VLAN 20 (gretap1.20), имеющих связанность через softgre-тоннель с тестовым PC1 и PC2 на портах LAN3 и LAN4 OpenWRT
Тестовые устройства PC1 и PC2, подключённые к портам LAN3 и LAN4 на OpenWRT
Управление MGMT PC для управления RTR-2

Настройка. Важные замечания

Для корректной передачи Ethernet-кадров через GRE-туннель необходимо учитывать следующие требования:

  • MTU — обязательно установить стандартный размер MTU 1500 для туннеля на OpenWRT и для GRE-интерфейсов на Linux-сервере. Это обеспечивает совместимость и предотвращает проблемы с фрагментацией

  • Фрагментация — для возможности передачи Ethernet-фреймов по IP-сети через туннель необходимо включить фрагментацию. На OpenWRT использовать параметр df='0' для разрешения фрагментации. На Linux-сервере использовать флаг nopmtudisc для отключения механизма Path MTU Discovery, что позволяет фрагментировать пакеты.

Примечания

  • Убедитесь, что MTU на всех интерфейсах согласован (в данном случае 1500)
  • Для работы GRE-туннеля может потребоваться разрешить GRE-протокол в брандмауэре на Linux-сервере (например, с помощью iptables или nftables)
  • Используемые IP-адреса (192.168.109.172, 192.168.109.183) и имена интерфейсов (wlp0s20f3) должны быть заменены на актуальные в вашей среде

Тестирование

Связность внутри VLAN

VLAN 10
PC1 → ping 10.100.10.1
Сервер → ping 10.100.10.10

VLAN 20
PC2 → ping 10.100.20.1
Сервер → ping 10.100.20.10

Ожидается: 100% пакетов, нормальное время.

Изоляция VLAN

PC1 → ping 10.100.20.10не должен отвечать
PC2 → ping 10.100.10.10не должен отвечать

Трафик через туннель (GRE/EoIP)

На сервере захват:

tcpdump -i wlp0s20f3 -n -e host 10.100.10.10 or host 10.100.20.10

С PC1/PC2 пингуем → в захвате должны быть GRE-пакеты (proto 47).

Тест MTU / фрагментации

# Должен отброситься / фрагментироваться
ping -M do -s 1472 -c 3 10.100.10.10

# Должен пройти без проблем
ping -M do -s 1426 -c 3 10.100.10.10

Повторить для VLAN 20.
Если всё прошло → EoIP и VLAN работают корректно.

Пример дампа трафика

Тестирование производительности EoIP

Выполнить два теста:

Будет видно, что при инкапсуляции пакетов в gre будет достаточно ощутимая просадка производительности: